package 
{
	import alternativa.engine3d.core.Mesh;
	import alternativa.engine3d.events.MouseEvent3D;
	import alternativa.engine3d.materials.FillMaterial;

	public class BoutonAppel extends Mesh {
		
		private var largeur:int=20;
		private var longueur:int=20;
		private var boutonGris:FillMaterial;
		private var boutonJaune:FillMaterial;
		private var etage:int;

		public function BoutonAppel(n:int):void
		{
			super("Bouton"+n);
			etage=n;
			//panneau
			createVertex(0,0,0,1);
			createVertex(0,largeur,0,2);
			createVertex(0,largeur,longueur,3);
			createVertex(0,0,longueur,4);
			//base du bouton
			createVertex(0,largeur/3,longueur/3,11);
			createVertex(0,2*(largeur/3),longueur/3,12);
			createVertex(0,2*(largeur/3),2*(longueur/3),13);
			createVertex(0,largeur/3,2*(longueur/3),14);
			//haut du bouton
			createVertex(-5,largeur/3,longueur/3,21);
			createVertex(-5,2*(largeur/3),longueur/3,22);
			createVertex(-5,2*(largeur/3),2*(longueur/3),23);
			createVertex(-5,largeur/3,2*(longueur/3),24);
			
			createFace([1,4,3,2,],"Cadre");
			createFace([11,21,22,12],"B1");
			createFace([12,22,23,13],"B2");
			createFace([13,23,24,14],"B3");
			createFace([14,24,21,11],"B4");
			createFace([21,24,23,22],"B5");
			
			createSurface(["Cadre"], "Cadre");
			createSurface(["B1","B2","B3","B4","B5"], "Bouton");
			
			boutonGris=new FillMaterial(0xCCDDEE,1,"normal",1,0xCCDDEE);
			boutonJaune=new FillMaterial(0xFEF693,1,"normal",1,0xFEF693);
			
			setMaterialToSurface(new FillMaterial(0xBBBBBB,1,"normal",1,0x000000),"Cadre");
			setMaterialToSurface(boutonGris,"Bouton");
			
			addEventListener(MouseEvent3D.CLICK,onClick);
		}
		
		public function onClick(e:MouseEvent3D):void{
			if(getSurfaceById("Bouton").material==boutonGris){
				allumeBouton();
				var btn_z:int=etage*300;
				var asc1:Ascenseur=(Ascenseur)(this.scene.root.getChildByName("Ascenseur1"));
				var asc2:Ascenseur=(Ascenseur)(this.scene.root.getChildByName("Ascenseur2"));
				if(Math.abs(btn_z-asc1.z)<=Math.abs(btn_z-asc2.z)){
					asc1.appelAscenseur(etage);
				}else{
					asc2.appelAscenseur(etage);
				}
			}
		}
		
		
		public function allumeBouton():void{
			setMaterialToSurface(boutonJaune,"Bouton");
		}
		
		public function eteintBouton():void{
			setMaterialToSurface(boutonGris,"Bouton");
		}
	}
}